/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import java.awt.event.ActionEvent;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import modelo.Alternativa;
import modelo.Dificuldade;
import modelo.Disciplina;
import modelo.QuestaoDiscursiva;
import modelo.QuestaoMultiplaEscolha;
import modelo.QuestaoProva;

/**
 *
 * @author Isadora
 */
public class ProvaController {

    private int numQuestoes = 0;
    ArrayList<QuestaoMultiplaEscolha> questoesME = new ArrayList();
    ArrayList<QuestaoDiscursiva> questoesD = new ArrayList();    
    
    public void Gerar(String nomeDisciplina, Object[] ListaTopicos, int MEFacil, int MEMedio, int MEDificil, int DFacil, int DMedio, int DDificil) throws Exception {

        Disciplina disciplina = DisciplinaController.consultar(nomeDisciplina);
        
        int i = 0;
        for(i=0;i<MEFacil;i++){
            numQuestoes++;
            QuestaoProva questao = new QuestaoProva();
            questao.setQuestaoME(QuestaoMultiplaEscolhaController.recuperar(disciplina, Dificuldade.FACIL, null));
            questoesME.add(questao.getQuestaoME());
        }
        i = 0;
        for(i=0;i<MEMedio;i++){   
            numQuestoes++;
            QuestaoProva questao = new QuestaoProva();
            questao.setQuestaoME(QuestaoMultiplaEscolhaController.recuperar(disciplina, Dificuldade.MEDIO, null));            
            questoesME.add(questao.getQuestaoME());
        }
        i = 0;
        for(i=0;i<MEDificil;i++){  
            numQuestoes++;
            QuestaoProva questao = new QuestaoProva();
            questao.setQuestaoME(QuestaoMultiplaEscolhaController.recuperar(disciplina, Dificuldade.DIFICIL, null));            
            questoesME.add(questao.getQuestaoME());
        }        
        
        i = 0;
        for(i=0;i<DFacil;i++){    
            numQuestoes++;
            QuestaoProva questao = new QuestaoProva();
            questao.setQuestaoD(QuestaoDiscursivaController.recuperar(disciplina, Dificuldade.FACIL, null));            
            questoesD.add(questao.getQuestaoD());
        }
        i = 0;
        for(i=0;i<DMedio;i++){   
            numQuestoes++;
            QuestaoProva questao = new QuestaoProva();
            questao.setQuestaoD(QuestaoDiscursivaController.recuperar(disciplina, Dificuldade.MEDIO, null));            
            questoesD.add(questao.getQuestaoD());
        }
        i = 0;
        for(i=0;i<DFacil;i++){  
            numQuestoes++;
            QuestaoProva questao = new QuestaoProva();
            questao.setQuestaoD(QuestaoDiscursivaController.recuperar(disciplina, Dificuldade.DIFICIL, null));            
            questoesD.add(questao.getQuestaoD());
        } 
        ExibirProva();
    }

    public void ExibirProva() {

        JPanel Panel = new JPanel();
        JTextArea htmlTextArea = new JTextArea(10, 20);
        String prova = "";
        int i = 0;

        for(QuestaoMultiplaEscolha questao : questoesME){
            i++;
            prova+="Questao " + i + "\n" + questao.getEnunciado() + "\n\n";
        }
        
        for(QuestaoDiscursiva questao : questoesD){
            i++;
            prova+="Questao " + i + "\n" + questao.getEnunciado() + "\n\n";            
        }        

        
        htmlTextArea.setText(prova);
        JScrollPane scrollPane = new JScrollPane(htmlTextArea);

        JButton imprimir = new JButton();
        imprimir.setText("Imprimir");
        imprimir.addActionListener(new java.awt.event.ActionListener() {

            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Imprimir(evt);
            }
        });

        JButton gabarito = new JButton();
        gabarito.setText("Gabarito");
        gabarito.addActionListener(new java.awt.event.ActionListener() {

            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GerarGabarito(evt);
            }
        });

        Panel.add(scrollPane);
        Panel.add(imprimir);
        Panel.add(gabarito);


        JFrame frame = new JFrame("Prova");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(Panel);
        frame.pack();
        frame.setVisible(true);
    }

    private void Imprimir(ActionEvent evt) {
        try {
            FileWriter arquivo = new FileWriter("c:\\Prova.html");


            String html = "";
            int i = 1;
            
            for (QuestaoDiscursiva questao : questoesD) {
                html += "Questao " + i++ + " - ";
                html += questao.getEnunciado();
                html += "<br /><br />";
            }

            for (QuestaoMultiplaEscolha questao : questoesME) {
                int j = 1;
                
                html += "Questao " + i++ + " - ";
                html += questao.getEnunciado();
                 html += "<ol style='list-style-type: upper-alpha'>";
                for(Alternativa alternativa : questao.getAlternativa()){
                    html+="<li>"+alternativa.getTexto()+"</li>";
                    j++;
                } 
                html +="</ol>";
                
            }

            arquivo.write(html);
            arquivo.close();

        } catch (IOException e) {
            // Houve uma exceção
        }
    }

    private void GerarGabarito(ActionEvent evt) {
try {
            FileWriter arquivo = new FileWriter("c:\\ProvaGabarito.html");

            String html = "";
            int i = 1;
            
            for (QuestaoDiscursiva questao : questoesD) {
                html += "<strong>Questao " + i++ + " - </strong>";
                html += questao.getEnunciado();
                html += "<br />";
                html += "<strong>Gabarito</strong> - "+questao.getGabarito();
                html += "<br /><br />";
            }

            for (QuestaoMultiplaEscolha questao : questoesME) {
                int j = 1;

                html += "<strong>Questao " + i++ + " - </strong>";
                html += questao.getEnunciado();
                html += "<ol style='list-style-type: upper-alpha'>";
                for (Alternativa alternativa : questao.getAlternativa()) {
                    html += "<li>" + alternativa.getTexto();
                    if (alternativa.getGabarito()) {
                        html += "- Correta";
                    }
                    html += "</li>";
                    j++;
                }
                html += "</ol>";

            }

            arquivo.write(html);
            arquivo.close();

        } catch (IOException e) {
            // Houve uma exceção
        }        

        
    }
}
